﻿#region 참조 네임스페이스

using Skying.IO;
using System.IO;

#endregion

namespace Skying.Net
{
	/// <summary>
	/// <para><see cref="System.Net.HttpWebRequest"/> 클래스의 확장 클래스인 <see cref="Skying.Net.HttpWebRequestExtensions"/> 클래스에서 제공하는 Upload 메서드에서 사용하는 업로드 파일의 정보를 제공한다.</para>
	/// </summary>
	public class HttpWebUploadFile
	{
		#region 프로퍼티

		/// <summary>
		/// 업로드할 파일의 파마메터 명칭을 가져온다.
		/// </summary>
		public string ParameterName
		{
			get;
			private set;
		}

		/// <summary>
		/// 업로드할 파일의 전체 경로를 가져온다.
		/// </summary>
		public string FileName
		{
			get;
			private set;
		}

		/// <summary>
		/// 업로드할 파일의 콘텐트 타입을 가져온다.
		/// </summary>
		public string ContentType
		{
			get;
			private set;
		}

		/// <summary>
		/// 업로드할 파일의 <see cref="System.IO.Stream"/>을 가져온다.
		/// </summary>
		public Stream FileStream
		{
			get;
			private set;
		}

		#endregion

		#region 생성자/소멸자

		public HttpWebUploadFile(string parameterName, string fileName)
		{
			this.ParameterName = parameterName;
			this.FileName = fileName;

			if (!File.Exists(fileName))
			{
				throw new FileNotFoundException();
			}

			this.ContentType = FileHelper.GetContentType(fileName);

			this.FileStream = File.Open(fileName, FileMode.Open);
		}

		#endregion
	}
}